博昕開源ERP產(chǎn)品簡介及研發(fā)理念
標(biāo)題:博昕開源ERP產(chǎn)品簡介及研發(fā)理念
標(biāo)簽:開源ERP;零售業(yè);Android開發(fā)者;Java
web開發(fā)者;小程序
博昕ERP產(chǎn)品簡介
博昕ERP是什么
博昕ERP是幫助零售門店商家經(jīng)營的ERP軟件,在門店的顧客、員工、商品3者的數(shù)量達(dá)到一定程度后應(yīng)用開源博昕ERP系統(tǒng),能有效減輕商家經(jīng)營負(fù)擔(dān)、提升顧客滿意度。目前博昕ERP已開發(fā)出滿足單一門店經(jīng)營需求的產(chǎn)品,我們把該產(chǎn)品稱為“博銷寶”(ProSales Box)。
博昕ERP可以帶給你什么
l 對于Java web開發(fā)者,可以快速照抄博昕ERP的Java后端框架。
l 對于Android開發(fā)者,可以快速照抄一套網(wǎng)絡(luò)請求框架。
l 對于教師和學(xué)生,本項(xiàng)目將是你迅速提高教學(xué)質(zhì)量、投身真實(shí)戰(zhàn)場的不二選擇。
l 對于項(xiàng)目經(jīng)理和企業(yè)管理者,可以快速組件一個(gè)具備先進(jìn)開發(fā)流程的團(tuán)隊(duì)。
l 對于零售企業(yè),應(yīng)用開源的博昕ERP可以低成本、快速、0試錯搭建一個(gè)新的商業(yè)軟件系統(tǒng),尤其是N平臺客戶端1服務(wù)器的軟件系統(tǒng),博昕ERP可以為你節(jié)省大量成本(資金和時(shí)間)。
博昕ERP所能滿足的用戶需求
以小型單店為例,通常有如下類型的用戶:顧客、老板、店長、收銀員。其中顧客是核心用戶類型,老板、店長和收銀員均圍繞顧客的購物需求開展經(jīng)營活動。以下為各類型用戶的基本需求:
根據(jù)用戶需求分析,博昕研發(fā)團(tuán)隊(duì)定義了如下系統(tǒng)角色:
角色 |
角色說明 |
會員 |
即顧客群體當(dāng)中認(rèn)可商家,愿意提供手機(jī)號碼進(jìn)行注冊為會員的顧客。 |
老板 |
即門店所有權(quán)人。 |
店長 |
即負(fù)責(zé)門店日常運(yùn)作、處理的各類事項(xiàng)的管理人員。 |
收銀員 |
即負(fù)責(zé)商品過機(jī)及收款的人員。 |
系統(tǒng)操作員(系統(tǒng)OP) |
即博昕公司內(nèi)部負(fù)責(zé)為商家開通及配置博昕ERP的人員,通常由客戶經(jīng)理擔(dān)任。 |
博昕ERP子系統(tǒng)結(jié)構(gòu)及模塊簡介
博昕ERP子系統(tǒng)結(jié)構(gòu):
博昕ERP包含了nbr服務(wù)器端和客戶端。
nbr服務(wù)器包含商家ERP子系統(tǒng)和客戶管理子系統(tǒng)(CMS),它們的模塊組成如圖:
用戶客戶端:POS機(jī)客戶端(包含安卓應(yīng)用軟件和電腦桌面應(yīng)用軟件)、微信小程序、微信公眾號:
博昕ERP產(chǎn)品研發(fā)理念
研發(fā)團(tuán)隊(duì)做好事情的原則
2019年3月27日,一個(gè)名為“996ICU”的項(xiàng)目在GitHub上傳開,迅速火遍了全網(wǎng)。這一事件揭露出了國內(nèi)程序員的加班現(xiàn)狀,反應(yīng)出了程序員們對這種加班狀況的抗拒心理。2021年下半年,騰訊等互聯(lián)網(wǎng)公司相繼宣布取消996工作制,國內(nèi)程序員是否迎來了不用加班的福音?短時(shí)間內(nèi)恐怕還不行,不過這無疑是人心所向,是一種趨勢。那么之前通過加班才能完成的工作,取消996工作制,還能按時(shí)按量的完成工作嗎?答案是肯定的,不過需要找出一個(gè)科學(xué)有效的方法。
我們都知道,程序員加班很多時(shí)候并非開發(fā)一些新功能,而是陷入了修bug改bug的泥潭中。如果能避免或減少這種情況,那么程序員就能高效率的完成工作。博昕研發(fā)團(tuán)隊(duì)開發(fā)博昕ERP時(shí),始終沒有忘記尋找科學(xué)有效的方法,讓研發(fā)人員輕松地把事情做好。做好事情是許多團(tuán)隊(duì)的基本要求,但是輕松地做好,幾乎是奢求。我們通過嚴(yán)格執(zhí)行以下團(tuán)隊(duì)組織原則達(dá)成“輕松地做好事情”的目標(biāo):
第一,重復(fù)。其精華體現(xiàn)在以下幾個(gè)方面:
l 通過重復(fù)使事情逼近一個(gè)完美的狀態(tài),此重復(fù)即迭代。我們認(rèn)為這是敏捷開發(fā)最大的精華。
l 令重復(fù)的事情不重復(fù)。使用機(jī)器來代替人類的重復(fù)勞動,使得人類有精力完成更多的事情。譬如自動化測試可以解放大量的生產(chǎn)力。
l 不能重復(fù)做的事情,想方設(shè)法重復(fù)做(針對事情本身或拆分后的局部,進(jìn)行多次重復(fù)的仿真),以使真正第一次做時(shí)就成功。
l 人類不是禽獸,通過重復(fù)做一件事,必定可以獲得進(jìn)步。
軟件工程充滿各種重復(fù)。據(jù)說Windows 2000大約有2000萬行代碼,由大約1000位軟件工程師完成。假設(shè)他們事先得到了上帝的指引,編碼完全不需要修改而且沒有bug,那么,按照每人一天1000行代碼的速度,這些工程師20天就可以開發(fā)一個(gè)Windows 2000。但是事實(shí)上并非如此,Windows 2000開發(fā)周期是三年左右。可見這些工程師花費(fèi)了大量的時(shí)間做了重復(fù)的事情。如果我們在軟件工程里面很好地控制重復(fù)的勞動,那么一定可以輕松地將事情做好。博昕ERP代碼量大約100萬行,測試用例大概是15000個(gè)(大部分是自動化測試),研發(fā)團(tuán)隊(duì)人數(shù)11人(絕大部分是實(shí)習(xí)生),開發(fā)周期是18個(gè)月左右,由于很好地遵循了重復(fù)的原則,加上以下第二點(diǎn)的流程,程序員幾乎不加班,經(jīng)常處于一種精神抖擻、斗志昂揚(yáng)、活潑有趣的工作氛圍中,工作效率比較高。
第二,流程。結(jié)合業(yè)界的先進(jìn)流程,探索以及不斷優(yōu)化一些適合博昕研發(fā)團(tuán)隊(duì)的敏捷開發(fā)流程。一個(gè)產(chǎn)品從0到1,和從1到2,其流程是不同的。我們采用的軟件工程流程如下:
階段 |
主要活動 |
軟件產(chǎn)出 |
服務(wù)器要求 |
作用 |
立項(xiàng) |
主要論證市場需求和政策需求,即產(chǎn)品研發(fā)的原因。 |
立項(xiàng)書 |
|
|
需求分析 |
BA(商業(yè)洞察者)制作需求規(guī)格說明書。 |
需求規(guī)格說明書 |
|
商業(yè)角度看需求 |
RD(研發(fā)團(tuán)隊(duì))將業(yè)務(wù)轉(zhuǎn)化為BA和RD都可以理解的文檔。 |
功能需求說明書 |
|
BA和RD對需求達(dá)成一致的理解 |
|
設(shè)計(jì) |
RD將功能需求說明書細(xì)化成概要設(shè)計(jì)說明書甚至詳細(xì)設(shè)計(jì)說明書,使得RD在開發(fā)、修改bug、迭代新功能時(shí)有據(jù)可依。如果沒有這些文檔,后面的溝通費(fèi)時(shí)費(fèi)力。 在產(chǎn)品的維護(hù)期,一旦有問題出現(xiàn),幾乎無法輕松解決。故一般來說,缺乏本階段的文檔,產(chǎn)品沒有很強(qiáng)的生命力,難以可持續(xù)發(fā)展。維護(hù)成本巨大,所有人都很頭痛。 |
概要設(shè)計(jì)說明書、詳細(xì)設(shè)計(jì)說明書、 測試用例設(shè)計(jì)文檔 |
|
RD內(nèi)部對需求達(dá)成一致的理解 |
編碼和測試 |
如之前所言,編碼期,會進(jìn)行手動測試和編寫自動化測試。 敏捷開發(fā)擁抱需求變化,所以在需求變化發(fā)生后,有些功能會回到設(shè)計(jì)階段甚至需求階段進(jìn)行討論。 |
代碼、測試用例設(shè)計(jì)文檔、測試腳本 |
1人1臺開發(fā)機(jī)器 |
|
DEV |
開發(fā)測試階段。測試單項(xiàng)功能、手動單元測試,每天運(yùn)行全部自動化測試并發(fā)送問題報(bào)告。版本更新非常頻繁。 |
兼有運(yùn)行測試、運(yùn)行產(chǎn)品的服務(wù)器 |
1臺服務(wù)器 |
確保單項(xiàng)功能沒有問題 |
SIT |
集成測試階段。測試N項(xiàng)功能同時(shí)運(yùn)行有沒有問題。在DEV階段開發(fā)得到穩(wěn)定的版本后,再部署到本階段的服務(wù)器 |
運(yùn)行產(chǎn)品的集成測試服務(wù)器 |
1臺服務(wù)器 |
確保集成測試沒有問題 |
UAT |
用戶驗(yàn)收階段。用戶驗(yàn)收功能是否正確。 |
運(yùn)行產(chǎn)品的用戶驗(yàn)收服務(wù)器 |
1臺服務(wù)器 |
確保用戶滿意 |
Prod |
生產(chǎn)環(huán)境階段。用戶使用。 |
運(yùn)行產(chǎn)品的線上服務(wù)器,即生產(chǎn)環(huán)境 |
1臺服務(wù)器或以上 |
產(chǎn)出用戶價(jià)值 |
維護(hù)期 |
功能迭代。 |
|
|
|
針對用戶需求不是所有都明確的、可能發(fā)生改變的,敏捷開發(fā)可以很好地應(yīng)對這種情況。敏捷開發(fā)以用戶的需求進(jìn)化為核心,采用迭代、循序漸進(jìn)的方法進(jìn)行軟件開發(fā)。敏捷開發(fā)屬于增量式開發(fā),在開發(fā)軟件過程中,將軟件分為一個(gè)個(gè)小的模塊。先開發(fā)主要的模塊,再開發(fā)次要模塊,逐步完善,最終開發(fā)出符合需求的軟件產(chǎn)品。它的最大特點(diǎn)是迭代,能更好的應(yīng)對用戶需求變更較多的情況。
我們特別重視“重復(fù)和流程”,這是我們在開發(fā)過程中總結(jié)出來的,認(rèn)為做某一類事情的科學(xué)方法和步驟。然后不斷的重復(fù)按照這個(gè)流程去做類似的事情,結(jié)果我們會越來越熟練,完成事情效率也會越高。開發(fā)人員應(yīng)該也必須按照“重復(fù)和流程”做事情,我們也會不斷的迭代已有的流程,讓團(tuán)隊(duì)受益于新的更有效的做事方法,輕松做好事情。
JIRA是Atlassian公司出品的項(xiàng)目與事務(wù)跟蹤工具,被廣泛應(yīng)用于敏捷管理、需求收集、任務(wù)跟蹤、缺陷跟蹤等工作領(lǐng)域。我們使用它來進(jìn)行博昕ERP研發(fā)管理。博昕團(tuán)隊(duì)研發(fā)人員經(jīng)過討論,制定出一個(gè)Sprint沖刺(未來一個(gè)短時(shí)間段要完成的目標(biāo)),項(xiàng)目管理人員根據(jù)目標(biāo)細(xì)分任務(wù),在上面創(chuàng)建、分配、追蹤任務(wù)。將項(xiàng)目分為一個(gè)一個(gè)的Sprint沖刺去完成,能更好的應(yīng)對用戶需求的變化。程序員在分配的任務(wù)上編寫工作計(jì)劃、工作總結(jié)。工作計(jì)劃就像茫茫大海中的指南針,讓我們不會失去方向,或避免做了撿芝麻丟西瓜的事情。不管遇到好的壞的,我們都應(yīng)該善于做工作總結(jié),好的可以分享給其它隊(duì)友,壞的可以提醒自己和他人注意,當(dāng)下一次做類似事情的時(shí)候,勢必會胸有成竹、馬到成功。
前面表格介紹了我們采用的軟件工程流程包含了以下階段:立項(xiàng)、需求分析、設(shè)計(jì)、編碼和測試、DEV、SIT、UAT、Prod、維護(hù)期。在每一個(gè)階段,我們都會產(chǎn)出一些文檔。用文檔記錄思考或討論好的事情,讓我們智慧的結(jié)晶得以保存,也有利于后期的迭代完善。沒有文檔,我們就無章可循,像一只無頭蒼蠅亂撞,程序員與產(chǎn)品經(jīng)理打架的悲劇也將不斷重演。
我們認(rèn)為,需求分析在整個(gè)軟件的開發(fā)周期中占比是最大的,在開發(fā)前期、開發(fā)期和開發(fā)后期都可能不斷的做著需求分析的工作。所以在前期做需求分析的工作越充足,后面改動越少,額外花費(fèi)的時(shí)間也會越少。產(chǎn)品經(jīng)理根據(jù)市場調(diào)研編寫出需求規(guī)格說明書,然后與開發(fā)人員根據(jù)需求規(guī)格說明書,編寫出功能需求文檔,開發(fā)人員最后根據(jù)功能需求說明書編寫出數(shù)據(jù)庫設(shè)計(jì)說明書和詳細(xì)設(shè)計(jì)說明書。
各個(gè)開發(fā)人員的代碼體系不應(yīng)各成一派,不利于后期的維護(hù)。在不斷的迭代中,我們也有了自己的一套代碼架構(gòu)。該有的代碼結(jié)構(gòu)不能少,不該有的也不能畫蛇添足。這樣統(tǒng)一代碼架構(gòu)讓隊(duì)友間討論彼此代碼的時(shí)候能更迅速的了解對方的思路,甚至能指引新員工如何去寫代碼。在編碼階段,我們還會總結(jié)出很多好的做事方法,如怎樣解決bug、如何進(jìn)行代碼的重構(gòu)等,并記錄到開發(fā)文檔當(dāng)中。
螞蟻金服擁有30多萬的測試用例,說明他們對測試用例是非常重視的。我們開發(fā)這個(gè)產(chǎn)品也是很注重測試的,認(rèn)為測試用例越豐富、越全面,開發(fā)出來的軟件越穩(wěn)定、越符合需求。開發(fā)人員編寫自動化測試代碼代替重復(fù)的手動測試工作。開發(fā)人員對自己開發(fā)的功能編寫測試用例,測試驅(qū)動開發(fā),編寫功能代碼。寫好功能代碼后,根據(jù)測試用例編寫自動化測試代碼,確保測試通過,保證功能的穩(wěn)定。以上的單元測試我們稱為元粒度測試,除此之外,在不斷地迭代過程我們還會產(chǎn)出以下粒度的測試:
(1)細(xì)粒度測試:子系統(tǒng)級測試;
(2)中粒度測試:跨子系統(tǒng)級測試;
(3)大粒度度測試測試:用戶接受度測試;
(4)在這一階段會產(chǎn)出功能代碼、測試代碼、測試用例文檔。
在一次次的部署中我們發(fā)現(xiàn),將代碼部署到服務(wù)器是一個(gè)步驟比較多、比較復(fù)雜的過程,人工去完成這些操作會出現(xiàn)遺忘某些步驟、在某些步驟容易出錯的情況。我們就思考能不能把這些操作交給機(jī)器去完成,避免這樣的情況發(fā)生。于是我們應(yīng)用了Jenkins,它是一個(gè)持續(xù)集成工具,結(jié)合SVN、MAVEN、python腳本完成自動化部署,可以提高效率和避免手動部署的出錯。Jenkins還可以很好地結(jié)合TestNG,使用它運(yùn)行自動化測試代碼、生成測試報(bào)告并發(fā)送給開發(fā)人員。Jenkins相關(guān)用例圖如圖所示:
備注:
“皇后”Windows服務(wù)和“小王子”是我們自行開發(fā)的工具。“皇后”Windows服務(wù)用來創(chuàng)建數(shù)據(jù)庫,她在接到nbr服務(wù)器創(chuàng)建數(shù)據(jù)庫的請求后開始執(zhí)行任務(wù)。
“小王子”是用來刷新數(shù)據(jù)庫或配合Jenkins任務(wù)啟動tomcat的。
博昕開源ERP代碼及開發(fā)文檔托管在GitHub:https://github.com/Boxin-ChinaGD/BXERP
技術(shù)博客:https://www.cnblogs.com/BXERP/
© 2014-2022 廣州市博昕信息技術(shù)有限公司 版權(quán)所有 粵ICP備15067421號
永修县 | 江华 | 彭山县 | 招远市 | 正安县 | 华安县 |
石河子市 | 桓仁 | 贵港市 | 临泉县 | 韶关市 | 泗阳县 |
分宜县 | 伊金霍洛旗 | 谢通门县 | 洛浦县 | 梅河口市 | 南郑县 |